#include "common.h"
// 客户端
int main()
{
    // 首先生成秘钥
    key_t key = ftok(PATH_NAME, PROJ_ID);

    int shmid = shmget(key, SHMSIZE, 0);  // 客户端给0即可
    if (shmid < 0)
    {
        perror("shmget:");
        exit(1);
    }

    // 挂接到当前进程的共享区
    char* shmarr = (char*)shmat(shmid, nullptr, 0);  // 共享内存id 挂接形式... 操作
    if (*((int*)shmarr) < 0)
    {
        perror("shmat:");
        exit(2);
    }
    std::cout << getpid() << "进程挂接共享内存成功！" << std::endl;

    // 进程通信 客户端写即可
    std::string buffer;
    while (true)
    {
        std::getline(std::cin, buffer);  // 等待键盘输入
        snprintf(shmarr, buffer.size() + 1, "%s", buffer.c_str());
        if (buffer == "quit") break;
    }

    // 去关联
    int s = shmdt(shmarr);
    if (s < 0)
    {
        perror("shmdt:");
        exit(2);
    }
    std::cout << getpid() << "进程去关联成功！" << std::endl;
    return 0;
}